perm filename DOC.NEW[1,VDS]1 blob
sn#229608 filedate 1976-08-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 INSTRUCTION SET FOR ARM SERVO PROGRAM: 27JULY76
C00006 00003 MONITOR COMMANDS - PROGRAM EDITING
C00010 00004 MONITOR COMMANDS - INPUT/OUTPUT
C00013 00005 MOTION INSTRUCTIONS
C00019 00006 SUMMARY OF INSTRUCTION SET
C00021 00007 123456789012345678901234567890123456789012345678901234567890123456789
C00025 00008 DATA STRUCTURE FOR COMMAND INSTRUCTIONS
C00026 ENDMK
C⊗;
INSTRUCTION SET FOR ARM SERVO PROGRAM: 27JULY76
For the following instructions, commas are to be used to separate
variables. If an argument is optional, the default value will be used
if no value is given. The names of transforms and programs can consist
of up to six characters.
MONITOR COMMANDS - DEFINING POSITIONS
The following commands are used for defining transforms and determining
the current position of the arm. Transforms are specified in cartesian
coordinates and Euler angles.
Command Operation
TRANS <trans> Used to specify and modify the value of transform
<trans>. The current value of the transform is
printed and any of the transform elements (X,Y,Z,O,A,T)
can be modified by typing a new value after the
query CHANGES?. Values that are not to be changed
can be omitted. Changes are continuously asked for
until no change in the transform is made.
HERE <trans> Defines transform <trans> to be current arm position.
As with TRANS, post modification of the Euler angles
and cartesian position is permitted.
TF <trans>,X,Y,Z,O,A,T Initializes the transform <trans> to the specified
value. All arguments left unspecified will be set
to zero. This instruction is used mainly for
reading in transforms that have be punched on paper
tape.
WHERE Prints out the current location of the arm in Euler
and joint angles along with the current hand opening.
MONITOR COMMANDS - PROGRAM CONTROL
Command Operation
EXEC <prog>,<nloop> Executes the user motion program <prog>, <nloop>
number of times. A loop is terminated when
either a STOP instruction or the last defined step
of the program is encountered. If <nloop> is
omitted, the program will be executed one time.
If <prog> is omitted, execution of the last
user program EXEC'ed will be re-initiated.
P Proceeds motion program at the step following the
step where execution was halted due to a PAUSE
instruction or runtime error.
MONITOR COMMANDS - PROGRAM EDITING
The following commands are used for creating and modifying user motion
instruction programs.
Command Operation
EDIT <prog>,<nstep> Permits user to creating or modifying program <prog>
starting at step <nstep>. If no step number is
specified editing proceeds from the step were the
last editing session was terminated. If no program
is specified, the last program edited is re-opened.
DEFPRO <prog> Used primarily for reading user motion programs
that have been dumped to paper tape via the PUNCHP
instruction. Sucessive program steps are read in
until an empty line or illegal motion is encountered.
Once having entered the EDIT program, the following edit functions may
be invoked.
Command Operation
<any motion instruction> Replaces the motion instruction stored at the
current step with the instruction typed in. The
next step is then displayed for editing.
<cr> Typing an empty line ( carriage return ) leaves the
current step unaltered and displays the next
instruction for editing.
D <nstep> Deletes an arbitrary number of instructions starting
with the current instruction step. If nstep is not
specified, only the current step is deleted.
E <prog>,<nstep> Switches EDITing from the current program to the
new user motion program <prog> starting with
step <nstep>. As always, <nstep> can be omitted
and editing will begin with the first motion
instruction.
I Moves instructions starting at the current step
down one and inserts in its place any motion
instruction that is typed in. The process is
repeated until an empty line is typed.
L Leaves the current step unaltered and displays the
previous step for editing.
P <nstep> Prints the next <nstep> number of program steps
and sets the current line number equal to the
last line printed.
S <nstep> Leaves the current step unaltered and displays the
instruction which is at step <nstep> in the user
program.
T Returns to monitor program.
MONITOR COMMANDS - INPUT/OUTPUT
The following commands are used to get hard copies of programs and
transforms.
Command Operation
LISTT <t1>,....,<t8> Types out the values of up to eight differenct
transforms. If no transforms are specified, the
values of all existing transforms will be printed.
PUNCHT <t1>,...,<t8> Practically the same as the LISTT instruction
except that no header is typed and the transform
names and values are printed in "TF" format. Also
a series of nulls are printed before and after
the transforms to provide some leader paper tape.
LISTP <prog>,<s1>,<s2> Types out the user motion program <prog> from step
<s1> to step <s2>. If the step numbers are omitted
the entire program will be printed.
PUNCHP <prog>,<s1>,<s2> Same as LISTP except that leading and trailing
blank paper tape is punched.
PROGS Prints out the names of all defined user programs.
MONITOR COMMANDS - MISC.
Command Operation
CLEAR Re-initializes ARM program so that all transforms
and user programs are deleted. This is a totally
destructive operation. This function first asks
"Are you sure (Y,N)?" to verify that the operation
is to be performed.
DONE Monitor program stops, computer exits to ODT.
MOTION INSTRUCTIONS
In the following motion instructions all distances are in inches, time
is in clock ticks (125 ticks per second), and strings can be up to one line
long.
Command Operation
DRAW dX,dY,dZ Moves the arm along a straight a distance of dX in
in the X direction, dY in the Y direction and dZ in
the Z direction. Any distances omitted are assumed
to be zero. The arm configuration and orientation
are maintained during this motion.
GO <trans> Moves the arm to the position and orientation specified
by transform <trans>. There is no path computed for
this motion, the hardware position servo operates in
slew mode. Any changes in configuration requested by
the user are executed during the motion.
MOVE <trans> Moves the arm to the position and orientation specified
by transform <trans>. Intermediate set points between
the initial and final arm position are computed by
interpolating the initial and final joint angles.
Any changes in configuration requested by the user are
performed during the motion.
DEPART <distance> Moves the arm hand a distance of <dist> along the
current axis of rotation of the last joint. Negative
distances move the hand forward, positive distances
move the hand back.
APPRO <trans>,<dist> Moves the hand to the position and orientation
specified by <trans> offset by a distance <dist> along
the axis of rotation of the last joint. Positive
distances move the hand away from the specified
transform position, negative distances move the
hand beyond the transform position.
READY Moves the arm to the READY position above the work
space. This forces the arm into a standard
configuration.
REST Moves the arm to the REST position. This leaves the
arm in a safe position in case power is turned off.
If no special speed has been set via the SPEED command,
the arm will more to rest at half the normal speed.
OPEN <dist> Changes the hand opening to <dist> inches.
GRASP <dist> Closes the hand and generates an error message
if the final hand opening is less than dist. The
closing speed of the hand is set at approximately
1 inch per second.
DRIVE <jt>,<angle>,<time> Operates the single joint specified by the
parameter <jt> (1-7). The current joint angle
is changed by an amount <angle>. The change in
joint angle must be specified in degrees. The
duration <time> must be specified in clock ticks.
PAUSE <message> Terminates execution of motion program and types
a message. Execution can be continued from this
point by typing P.
STOP Same as PAUSE except that motion cannot be continued.
COMMNT <string> Comment line, a no-operation at run-time.
TYPE <message> Types the string <message> on the teletype.
RIGHTY or LEFTY Requests a change in arm configuration to a left
or right shouldered arm.
ABOVE or BELOW Requests a change in arm configuration so that the
approach angle of the hand is from below or above
objects.
FLIP or NOFLIP Changes the range of operation of joint 5 to
plus (NOFLIP) or minus (FLIP) angles.
SPEED <percentage> Request that the next arm motion be performed at
a speed other than normal( = 100). The percentage
can range from 1 ( extremely slow ) to 32000
( hardware slewing mode ).
COARSE The low tolerance feature is enabled in the
hardware servo so that larger errors in
the final position of the arm joints will be
permitted at the end of the next motion.
INTOFF Turns off the hardware position error integration
feature during the next motion.
INTON Forces the hardware to integrate the position error
throughout the next motion.
SUMMARY OF INSTRUCTION SET
Top Level Instructions:
TRANS <transform>
HERE <transform>
TF <transform>,X,Y,Z,O,A,T
WHERE
EXEC <program name>,<pass count>
P
LISTT <trans #1>, .... , <trans #8>
PUNCHT <trans #1>, .... , <trans #8>
LISTP <program name>,<first step>,<last step>
PUNCHP <program name>,<first step>,<last step>
PROGS
CLEAR
DONE
DEFPRO <program name>
EDIT <program name>,<step number>
Edit Instructions
<any motion instruction>
c/r
L
S <number of steps>
D <number of steps>
I
E <program name>,<step number>
T
Motion Instructions
DRAW dX,dY,dZ
GO <transform>
MOVE <transform>
DEPART <distance>
APPRO <transform>,<distance>
READY
REST
DRIVE <joint>,<angle>,<time>
OPEN <distance>
GRASP <distance>
COMMNT <any string>
TYPE <any string>
PAUSE <any string>
STOP
RIGHTY
LEFTY
ABOVE
BELOW
FLIP
NOFLIP
SPEED <percentage>
COARSE
INTOFF
INTON
123456789012345678901234567890123456789012345678901234567890123456789
;DATA STRUCTURE FOR SYMBOL TABLE BLOCK
;THE FOLLOWING IS THE ORGANIZATION FOR A BLOCK CONTAINING THE SYMBOL
;FOR A TOP LEVEL COMMAND, MOTION INSTRUCTION, EDIT INSTRUCTION,
;PROGRAM, OR SUBROUTINE.
;
TYPBIT==2
NUMARG==3
SYMNME==4
FUNPTR==12
FUNARG==14
; _________________________________________
; | |
; HASH PTR → | PTR TO NEXT BLOCK IN BUCKET OR 0 |
; |---------------------------------------|
; | # OF ARGS*2 | TYPE BITS |
; |---------------------------------------|
; | |
; | - - - - - - - - - - - - - - - - - - - |
; | SIX ASC CHARACTERS FOR THE NAME |
; | - - - - - - - - - - - - - - - - - - - |
; | |
; |---------------------------------------|
; | PTR TO SUBR TO PERFORM FUNCTION |
; |---------------------------------------|
; | 8 FOUR BIT CODES SPECIFYING |
; | - - - - - - - - - - - - - - - - - - - |
; | TYPES OF ARGUMENTS |
; |_______________________________________|
;
;THE TYPE BITS SPECIFY THE TYPE OF FUNCTION ASSOCIATED WITH THE
;SYMBOL DATA BLOCK AND ARE DEFINED AS FOLLOWS:
COMMND==1 ;TOP LEVEL MONITOR COMMAND
MOTION==2 ;MOTION INSTRUCTION
EDITIN==4 ;EDIT INSTRUCTION
;THE FOUR BIT CODES SPECIFYING THE ARGUMENTS ARE INTERPRETED AS
;FOLLOWS: IF THE LSB IS ON THE ARGUMENT IS OPTIONAL OTHER WISE
;AN ERROR WILL BE INDICATED IF NO ARGUMENT IS FOUND. THE 3 MSB
;USED AS AN INDEX INTO THE FOLLOWING TABLE.
TRNARG==0
DISARG==2
ANGARG==4
PRGARG==6
FUNARG==10
ARGTYP: GETTRN ;TRANSFORM
GETDIS ;DISTANCE
GETANG ;ANGLE
GETPRG ;USER DEFINED PROGRAM
GETFUN ;MOTION INSTRUCTION
;TRANSFORM SYMBOL DATA BLOCKS ARE VERY SIMILAR TO INSTRUCTION
;EXCEPT THAT THERE TYPE BIT IS:
TRANS ==10 ;TRANSFORM SYMBOL
;AND THE CONTENTS OF THE DATA BLOCK IS AS FOLLOWS:
; _________________________________________
; | |
; HASH PTR → | PTR TO NEXT BLOCK IN BUCKET OR 0 |
; |---------------------------------------|
; | 0 | TYPE BITS |
; |---------------------------------------|
; | |
; | - - - - - - - - - - - - - - - - - - - |
; | SIX ASC CHARACTERS FOR THE NAME |
; | - - - - - - - - - - - - - - - - - - - |
; | |
; |---------------------------------------|
; | PTR TRANSFORM DATA BLOCK |
; |_______________________________________|
DATA STRUCTURE FOR COMMAND INSTRUCTIONS
; _________________________________________
; | |
; STEP PTR → | PTR TO NEXT STEP IN PROGRAM OR 0 |
; |---------------------------------------|
; | PTR TO SYMBOL BLOCK FOR RUN FUNC. |
; |---------------------------------------|
; | ARG 1 |
; | - - - - - - - - - - - - - - - - - - - |
; | : |
; | - - - - - - - - - - - - - - - - - - - |
; | ARG N |
; |_______________________________________|